# include "stdio.h"
# include "assert.h"
# define unopen(fil) {if (fil!=NULL) {fclose(fil); fil=NULL;}}
extern long indexdate, gdate();
runbib (s)
	char *s;
{
/* make a file suitable for fgrep */
char tmp[200];
sprintf(tmp, "/usr/lib/refer/mkey %s >%s.ig", s,s);
system(tmp);
}
makefgrep(indexname)
	char *indexname;
{
	FILE *fa =NULL, *fb =NULL;
	if (ckexist(indexname, ".ig"))
		{
		/* existing gfrep -type index */
# if D1
		fprintf(stderr, "found fgrep\n");
# endif
		fa = iopen(indexname, ".ig");
		fb = iopen(indexname, "");
		if (gdate(fb)>gdate(fa))
			{
			if (fa!=NULL)
				fclose(fa);
			runbib(indexname);
			fa= iopen(indexname, ".ig");
			}
		indexdate = gdate(fa);
		unopen(fa); unopen(fb);
		}
	else
	if (ckexist(indexname, ""))
		{
		/* make fgrep */
# if D1
			fprintf(stderr, "make fgrep\n");
# endif
		runbib(indexname);
		time(&indexdate);
		unopen(fb);
		}
	else /* failure */
		return(0);
return(1); /* success */
}
ckexist(s, t)
	char *s, *t;
{
char fnam[100];
strcpy (fnam, s);
strcat (fnam, t);
return (access(fnam, 04) != -1);
}
iopen (s, t)
	char *s, *t;
{
char fnam[100];
FILE *f;
strcpy (fnam, s);
strcat (fnam, t);
f = fopen (fnam, "r");
if (f == NULL)
	{
	err("Missing expected file %s", fnam);
	exit(1);
	}
return(f);
}
